SSM整合解析

SSM整合解析

注:Spring、Springmvc框架搭建省略。

一、Spring整合Springmvc

1、目的

​ 启动Tomcat本地服务器的时候加载spring的配置文件,在controller中能成功调用service对象中的方法。

2、对象及原理讲解

​ ServletContext域对象,只会创建一次,服务器启动时创建,服务器关闭时销毁,生命周期为项目运行阶段;

​ 监听器对象,用作监听ServletContext域对象的创建和销毁,执行一次,服务器启动时执行;

​ 监听器去加载spring的配置文件,创建WEB版本工厂,存储ServletContext对象。

3、整合

​ 在web.xml中配置ContextLoaderListene监听器,代码如下:

1
2
3
4
5
6
7
8
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listenerclass>
</listener>
<!-- 配置加载类路径的配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>

​ 在控制器类中做自动类型注入“@Autowired”,调用service业务层的方法做单元测试即可。

二、Spring整合MyBatis框架

1、MyBatis环境搭建

1.1 配置文件编写(SqlMapConfig.xml)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!-- 声明 -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 使用的是注解 -->
<mappers>
<!-- 该包下所有的dao接口都可以使用,如下所示 -->
<package name="cn.njut.dao"/>
</mappers>
</configuration>
1.2测试编写

​ 首先在接口类的方法中添加注解

1
2
@Select("select * from 表名")
public List<Account> findAll();

​ 然后编写测试方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 加载sql配置文件
InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
// 创建会话工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
// 创建sqlSession对象
SqlSession session = factory.openSession();
// 获取代理对象
AccountDao dao = session.getMapper(AccountDao.class);
// 调用接口类中实现的查询方法
List<Account> list = dao.findAll();
for (Account account : list) {
System.out.println(account);
}
// 关闭
session.close();
inputStream.close();

/////////////////注意在编写“增删改”三个方法的时候需要进行事物提交//////////////////////
/////////////////////////////如session.commit();///////////////////////////////////

2、整合

​ 注:Spring整合MyBatis会放弃对SqlMapConfig.xml的使用,而是在Spring配置文件中配置原 SqlMapConfig中的内容。

2.1配置文件的编写(applicationContext.xml)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!-- 配置C3P0的连接池对象 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/ssm" />
<property name="username" value="root" />
<property name="password" value="123456" />
</bean>
<!-- 配置SqlSession的工厂 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 配置扫描dao的包 -->
<bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.njut.dao"/>
</bean>
2.2查询测试的编写
1
2
3
4
5
6
7
8
9
10
11
12
/**
* 查询所有的数据
* @return
*/
@RequestMapping("/findAll")
public String findAll() {
List<Account> list = accoutService.findAll();
for (Account account : list) {//增强型for循环打印查询到的数据库内容
System.out.println(account);
}
return "list";
}